# -*- indent-tabs-mode: nil -*-
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

source_reference = get_option('source_reference')
gi_docgen = find_program('gi-docgen')

gi_docgen_toml_conf = configuration_data()
gi_docgen_toml_conf.set('SOURCE_REFERENCE', source_reference)
# We can't use "version.replace('-SNAPSHOT', '.dev')" here because
# Ubuntu 20.04's Meson is < 0.58.0.
if version_tag == ''
  gi_docgen_version_tag = ''
else
  # GI-DocGen doesn't like MAJOR.MINOR.PATCH-SNAPSHOT format.
  gi_docgen_version_tag = '.dev'
endif
gi_docgen_version = '@0@.@1@.@2@@3@'.format(version_major,
                                            version_minor,
                                            version_micro,
                                            gi_docgen_version_tag)
gi_docgen_toml_conf.set('VERSION', gi_docgen_version)

gir_top_build_dir = meson.current_build_dir() / '..'
arrow_glib_gir_dir = gir_top_build_dir / 'arrow-glib'
arrow_flight_glib_gir_dir = gir_top_build_dir / 'arrow-flight-glib'
entries = [['arrow-glib', arrow_glib_gir[0]]]
if arrow_cuda.found()
  entries += [['arrow-cuda-glib', arrow_cuda_glib_gir[0]]]
endif
if arrow_dataset.found()
  entries += [['arrow-dataset-glib', arrow_dataset_glib_gir[0]]]
endif
if arrow_flight.found()
  entries += [['arrow-flight-glib', arrow_flight_glib_gir[0]]]
endif
if arrow_flight_sql.found()
  entries += [['arrow-flight-sql-glib', arrow_flight_sql_glib_gir[0]]]
endif
if gandiva.found()
  entries += [['gandiva-glib', gandiva_glib_gir[0]]]
endif
if parquet.found()
  entries += [['parquet-glib', parquet_glib_gir[0]]]
endif
foreach entry : entries
  module_name = entry[0]
  gir = entry[1]
  gi_docgen_toml = configure_file(input: '@0@.toml.in'.format(module_name),
                                  output: '@0@.toml'.format(module_name),
                                  configuration: gi_docgen_toml_conf)
  gir_dir = gir_top_build_dir / module_name
  current_source_dir = meson.current_source_dir()
  command = [
    gi_docgen,
    'generate',
    '--add-include-path=@0@'.format(arrow_flight_glib_gir_dir),
    '--add-include-path=@0@'.format(arrow_glib_gir_dir),
    '--add-include-path=@0@'.format(gir_dir),
    '--config=@INPUT0@',
    '--content-dir=@0@'.format(current_source_dir),
    '--no-namespace-dir',
    '--output-dir=@OUTPUT@',
    '--quiet',
  ]
  if get_option('werror')
    command += ['--fatal-warnings']
  endif
  command += ['@INPUT1@']
  custom_target('@0@-doc'.format(module_name),
                input: [gi_docgen_toml, gir],
                depend_files: ['urlmap.js'],
                output: module_name,
                command: command,
                build_by_default: true,
                install: true,
                install_dir: doc_dir)
endforeach
